package com.reportes;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.http.HttpServletRequest;

import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRResultSetDataSource;

import com.Reporte;
import com.util.Util;

import exceptions.InvalidArgumentException;

public class Organizacion extends Reporte {

	private static final String ID_ORGANIZACION = "organizacion";
	private String criterioSQL = "";

	@Override
	public void VerificarParametros(HttpServletRequest request)
			throws InvalidArgumentException {

		setParametrosJasper("parametro",request.getParameter("parametroConsulta"));
		Integer id = Util.toInteger(request.getParameter(ID_ORGANIZACION));
		if (id != null)
			criterioSQL = " WHERE ORGANIZACION.id= " + id;
	}

	@Override
	public Object clone() throws CloneNotSupportedException {
		Organizacion reporte = new Organizacion();
		copyAttributesTo(reporte);
		return reporte;
	}

	@Override
	protected JRDataSource executeQuery(Connection connection)
			throws SQLException {
		StringBuffer sql =
			new StringBuffer("SELECT Organizacion.*, Caserio.nombre as nombre_caserio")
					.append(" FROM" )
					.append(" Organizacion" )
					.append(" INNER JOIN Tipo_organizacion ON (organizacion.tipo_organizacion_id = tipo_organizacion.id)")
					.append(" INNER JOIN Caserio ON (organizacion.caserio_id = caserio.id )")
					.append(criterioSQL)
					.append(" ORDER BY Organizacion.id");
		Statement statement = connection.createStatement();
		ResultSet rs = statement.executeQuery(sql.toString());
		return new JRResultSetDataSource(rs);
	}

}
